from tensorflow import (
    Tensor,
    tanh,
    multiply,
    less,
    where
)


def activation_penalized_tanh(
        x: Tensor
) -> Tensor:
    """
    计算经过惩罚的tanh激活函数。

    参数:
    x: 输入张量，类型为Tensor

    返回:
    y: 经惩罚的tanh激活函数输出，类型为Tensor
    """

    # 计算tanh激活函数的值
    y = tanh(x)
    
    # 对输入x小于0的部分，乘以0.25进行惩罚
    # less(x, 0) 返回一个布尔张量，x小于0的位置为True，其他位置为False
    # where(condition, x_true, x_false) 根据condition的布尔值选择x_true或x_false
    # multiply(y, .25) 将tanh(x)值乘以0.25
    y = where(less(x, 0), multiply(y, .25), y)

    return y
